package com.study.demo4;

import java.util.Iterator;
import java.util.TreeSet;

public class A04_TreeSet {
    /**
     * treeset
     *      不重复、无索引、可排序
     * */
    public static void main(String[] args) {
        /*
        * 需求：
        *       存储整数并排序
        * */
        
        /*TreeSet<Integer> ts = new TreeSet<>();
        ts.add(3);
        ts.add(5);
        ts.add(1);
        ts.add(2);
        ts.add(4);
        System.out.println(ts);*/
        
        // 遍历集合
        /*Iterator<Integer> it = ts.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        
        for (Integer t : ts) {
            System.out.println(t);
        }
        
        ts.forEach(i-> System.out.println(i));*/
        
        
        
        /*
        * 创建学生对象，添加3个学生对象
        * 对象属性 姓名 年龄
        * 要求按照学生的年龄进行排序
        * 同年龄按照姓名字母排序
        * 同姓名同年龄认为是同一个人
        * */
        
        // Student s1 = new Student("zhangsan",23);
        // Student s2 = new Student("lisi",24);
        // Student s3 = new Student("wangwu",25);
        //
        // TreeSet<Student> ts = new TreeSet<>();
        // ts.add(s1);
        // ts.add(s2);
        // ts.add(s3);
        // System.out.println(ts);
        
        /*
        * 自行选择比较器排序和自然排序两种方式
        * 存入四个字符串 "c","ab","df","qwer"
        *   按照长度进行排序，如果一样长则按照首字母排序
        * */
        
        // TreeSet<String> ts = new TreeSet<>((o1, o2) -> o1.length() - o2.length() == 0? o1.compareTo(o2):o1.length() - o2.length());
        // ts.add("c");
        // ts.add("ab");
        // ts.add("df");
        // ts.add("qwer");
        // System.out.println(ts);
        
        
        /*
        * 需求：
        *       创建5个学生对象
        *       属性（姓名，年龄，语文成绩，数学成绩，英语成绩）
        *       按总分从高到低输出到控制台
        *       如果总分一样，按照语文排序
        *       如果语文一样，按照数学排序
        *       如果数学一样，按照英语排序
        *       如果英语一样，按照年龄排序
        *       如果年龄一样，按照姓名字母顺序排序
        *       如果都一样，则为同一个学生，不存
        * */
        
        StudentLearning s1 = new StudentLearning("zhangsan",23,90,99,50);
        StudentLearning s2 = new StudentLearning("lisi",24,90,98,50);
        StudentLearning s3 = new StudentLearning("wangwu",25,95,100,30);
        StudentLearning s4 = new StudentLearning("zhaoliu",26,60,99,70);
        StudentLearning s5 = new StudentLearning("qianqi",26,70,80,70);
        
        // 创建集合对象
        TreeSet<StudentLearning> sl = new TreeSet<>();
        sl.add(s1);
        sl.add(s2);
        sl.add(s3);
        sl.add(s4);
        sl.add(s5);
        
        for (StudentLearning studentLearning : sl) {
            System.out.println(studentLearning);
        }
    }
}
